The invention relates to embedded system techniques, and in particular, to program initiation methods.
Computability and main memory capacity in embedded systems are very restricted, thus system resources thereof must be well managed. Prior to executing an application, a typical embedded system decompresses and loads an image file of the application from storage media to a main memory. Due to high memory cost, data compression methods are provided to enhance main memory usage efficiency. These methods are roughly classified as dynamical and static decompression techniques.
Static decompression techniques are implemented by modifying a boot procedure to decompress and load an operating system (OS), applications, and required function libraries into a main memory during a computer boot process. This improves application execution efficiency and reduces required storage medium capacity, but, consumption of main memory capacity is increased.
For example, if a decompressed file system of an embedded system is 32 MB (megabytes), an embedded system with a compression ratio 10%˜25% may require 3.2 MB˜8 MB of mass storage capacity. Application execution also utilizes main memory space, thus, the embedded system requires approximately 64 MB or more of main memory capacity.
Dynamic decompression techniques are implemented by modifying a file system to decompress and load only a section of program codes for application execution. While an application runs, data files in libraries are subsequently decompressed and loaded as needed. Thus, dynamic decompression consumes processor resources and slows application execution by up to 30%.
In a 32 MB file system, an embedded system utilizing the dynamic decompression techniques only requires 16 MB of mass storage capacity and 2 MB˜32 MB of main memory capacity. Application execution, however, is very slow.
U.S. Pat. No. 6,298,422 discloses a method capable of reducing central processing unit (CPU) workloads and main memory capacity usage utilizing a multitasking OS. Typical embedded systems, however, are uni-tasking and do not utilize virtual memory, thus incompatible with this method.